#define ElemType int

typedef struct ListNode List_Node;

#include "common.h"

int maxProfit(int* prices, int pricesSize);

int main()
{
	return 0;
}

int maxProfit(int* prices, int pricesSize)
{
	if (!pricesSize)
		return 0;

	int f0 = -prices[0], f1 = 0, f2 = 0;
	for (int i = 1; i < pricesSize; i++) {
		int new0 = f0, tmp;
		if ((tmp = f2 - prices[i]) > f0)
			new0 = tmp;
		int new1 = f0 + prices[i];
		int new2 = f1 > f2 ? f1 : f2;

		f0 = new0, f1 = new1, f2 = new2;
	}

	return f1 > f2 ? f1 : f2;
}
